package com.mzy;

import com.mzy.utils.Utils;

import java.util.Arrays;

import static com.mzy.utils.Utils.swap;

public class BubbleSort {


    // public static void sort(int[] arr) {
    //     int N = arr.length;
    //     // 0~N-1
    //     // 0~N-2
    //     for (int i = N - 1; i >= 0; i--) {
    //         // 0 1   1 2  2  3   n-1 N
    //         for (int j = 0; j < i; j++) {
    //             if (arr[j] > arr[j + 1]) {
    //                 swap(arr, j, j + 1);
    //             }
    //         }
    //     }
    // }


    /*public static void sort(Integer[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            boolean swapped = false;
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    Utils.swap(arr, j, j + 1);
                    swapped = true;
                }
            }
            if (!swapped) break;
        }
    }
*/

    public static void main(String[] args) {

        int[] arr = {2, 1, 56, 8, 3, 7, 3, 9, 3, 89};
        // 2, 1, 56, 8, 3, 7, 3, 9, 3, 89
        // 1  2  8   3  7  3  9  3  56 89
        // 1  2  3   7  3  8  3  9  56 89
        // 1  2  3   3  7  3  8  9  56 89
        // 1  2  3   3  3  7  8  9  56 89
        //


        Utils.testSort(a -> sort(a));
    }

    private static void sort(Integer[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }
}
